'use strict'

const http = require('http');

let html = `
    <!DOCTYPE html>
    <html>
    <head><title>first http</title>
    </head>
    <body>你好。</body>
    </html>
`


let routerTable = {
    '/': async (request, response) => {
        response.setHeader('content-type', 'text/html;charset=utf-8');
        response.end(html);
    },

    '/test': async (request, response) => {
        let status = parseInt(Math.random() * 200) + 199
        response.statusCode = status
        response.end('test end')

    },

    '/data': async (request, response) => {

        let bufferList = [];
        let bufferLength = 0;

        request.on('data', chunk => {
            bufferLength += chunk.length
            bufferList.push(chunk)
        })
        let bodyData = null;
        request.on('end', () => {
            if (bufferList.length > 0) {
                bodyData = Buffer.concat(bufferList, bufferLength)
                bufferList = []
            }
            if (bodyData) {
                response.end(bodyData)
            } else {
                response.end()
            }
        })
    }
}


http.createServer((request, response) => {
    if (!routerTable[request.url]) {
        response.statusCode = 404
        response.end('page not found')
        return
    }
    routerTable[request.url](request, response)

})
    .listen(3456);